package com.stellar.wechat.core.auth;

import com.stellar.wechat.core.common.exception.WxApiException;
import com.stellar.wechat.core.entity.WxSessionInfo;

import java.io.IOException;

/**
 * @Author Jqcc
 * @Version 1.0
 * @Data 2025/3/30
 * @Description 微信认证服务：提供微信登录认证,检验登录态,重置登录态的能力
 */
public interface WxAuthService {

    /**
     * 小程序登录根据
     *
     * @param code
     * @return sessionKey和openid
     * @throws IOException
     */
    WxSessionInfo code2Session(String code) throws IOException, WxApiException;

    /**
     * 检验登录态
     *
     * @param sessionKey
     * @param openid
     * @return 是否校验通过  true/false
     * @throws IOException
     */
    boolean checkSessionKey(String sessionKey, String openid) throws WxApiException;

    /**
     * 重置登录态
     *
     * @param openid
     * @param sessionKey
     * @return 重置后的sessionKey
     * @throws IOException
     */
    WxSessionInfo resetUserSessionKey(String openid, String sessionKey) throws WxApiException;

}